package com.tosee.logic.impl;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;

import com.tosee.exception.GeneriqueException;
import com.tosee.logic.AbstractBusinessLogic;
import com.tosee.logic.IEpisodeBusinessLogic;
import com.tosee.model.allocine.AlloEpisode;
import com.tosee.model.dbTosee.Episode;
import com.tosee.model.dbTosee.Saison;
import com.tosee.model.dbTosee.Serie;
import com.tosee.model.dto.RechercheDto;

/**
 * Classe BL serie
 * 
 * @author RobinT
 */
@Service
public class EpisodeBusinessLogic extends AbstractBusinessLogic implements IEpisodeBusinessLogic {

    /**
     * LOGGER.
     */
    private static final Log LOGGER = LogFactory.getLog(EpisodeBusinessLogic.class);

    @Override
    public Episode getEpisodeByCodeAllocine(RechercheDto _rechercheDto) throws GeneriqueException {

        getControleProvider().getCommunControle().authentifier(_rechercheDto);

        Episode retour = null;
        if(_rechercheDto != null && _rechercheDto.getCode() != null) {
            retour = getDaoProvider().getEpisodeDao().getEpisodeByCodeAllocine(_rechercheDto.getCode());
        }
        return retour;
    }

    @Override
    public Episode ajouterEpisodeLocale(AlloEpisode _alloEpisode) throws GeneriqueException {
        Episode retour = null;

        if(_alloEpisode != null) {
            retour = new Episode();
            // retour.setAuteur(_alloEpisode.get)
            retour.setCodeAllocine(_alloEpisode.getCode());
            // retour.setDateDiffusion(_alloEpisode.get²)
            retour.setTitre(_alloEpisode.getTitre());
            retour.setTitreVo(_alloEpisode.getTitreVO());

            Serie serie = getDaoProvider().getSerieDao().getSerieByCodeAllocine(_alloEpisode.getIdSerie());
            retour.setSerie(serie);

            Saison saison = getDaoProvider().getSaisonDao().getSaisonByCodeAllocine(_alloEpisode.getIdSaison());
            retour.setSaison(saison);

            if(serie != null && saison != null) {
                getDaoProvider().getEpisodeDao().save(retour);
            }
        }

        return retour;
    }
}
